package usf.gwt.ui.bootstrap.client.core;

import usf.gwt.ui.bootstrap.client.Alignement;
import usf.gwt.ui.bootstrap.client.WidgetOffset;
import usf.gwt.ui.bootstrap.client.WidgetWidth;

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.ComplexPanel;
import com.google.gwt.user.client.ui.Widget;

public abstract class BootstrapContainer extends ComplexPanel implements Bootstrap {

	public BootstrapContainer() {
		setElement(initWidget());
		initStyle();
	}
	
	@Override
	public void add(Widget child) {
		Element e = child instanceof BootstrapAttach ? getBaseElement() : getContainerElement() ;
		add(child, e);
	}
	
	@Override
	public void setId(String id) {
		getElement().setId(id);
	}
	@Override
	public String getId() {
		return getElement().getId();
	}
	
	public void setOffset(WidgetOffset offset) {
		JqueryUtils.switchClass(getElement(), WidgetOffset.values(), offset);
	}
	public void setSize(WidgetWidth width) {
		JqueryUtils.switchClass(getElement(), WidgetWidth.values(), width);
	}
	public void setAlign(Alignement align) {
		JqueryUtils.switchClass(getElement(), Alignement.values(), align);
	}
	
	protected abstract Element initWidget();
	protected void initStyle() {}	
	
	
	protected Element getContainerElement() {
		return getElement();
	}
	protected Element getBaseElement() {
		return getElement();
	}
}
